package com.eastfair.pay.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.eastfair.annotation.annotation.dictionary.Dict;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.pay.demand.CollectRecordGroup;
import com.eastfair.pay.demand.PaymentRecordGroup;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "PaymentRecordVO", description = "付款记录")
public class PaymentRecordVO  implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 主键
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private Long id;

        /**
         * 收款账户id
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private Long companyId;

        /**
         * 收款单位
         */
        @ApiModelProperty(value = "收款单位")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String companyName;

        /**
         * 对方户名
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String bankAccountName;

        /**
         * 对方账号
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String bankAccountNumber;

        /**
         * 开户行
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String bankName;

        /**
         * 付款金额
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private BigDecimal payAmount;

        /**
         * 付款时间
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private LocalDateTime payTime;

        /**
         * 认款状态
         */
        @Dict(dicCode = "COLLECT_STATE")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String collectState;

        /**
         * 认领金额
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private BigDecimal collectAmount;

        /**
         * 付款方式(数据字典)
         */
        @Dict(dicCode = "PAY_TYPE")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String payType;

        /**
         * 付款流水号
         */
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String mainno;
        /**
         * 单号
         */
        @ApiModelProperty(value = "单号")
        @VoInfo(groups = {PaymentRecordGroup.queryPagePaymentRecord.class,PaymentRecordGroup.queryPaymentRecordList.class})
        private String businessCode;


}
